package com.hspedu.reflection.class_;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Scanner;

/**
 * @author DL5O
 * @version 1.0
 */
public class ClassLoad_ {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入key:");
        String key = sc.next();
        switch (key){
            case "1":
                //静态加载，无论是否使用了该类，编译器都会来检查，是否有该类，没有或者有错误就报错
                //依赖性比较强
                Dog dog = new Dog();
                dog.cry();
                break;
            case "2":
                //动态加载：当运行时，使用到了这个类，才会进行检查，
                //没有会抛出异常，没有使用到，即使不存在该类也不会报错
                Class<?> person = Class.forName("person");
                try {
                    Method hi = person.getMethod("hi");
                    hi.invoke(person);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                break;
            default:
                break;
        }
    }
}

class Dog{

    public void cry(){
        System.out.println("dog cry..");
    }
}